package java_0500_collection;

import java.util.Comparator;
import java.util.TreeSet;

@SuppressWarnings({"all"})
public class TreeSet01 {
    public static void main(String[] args) {
        //当使用无参构造器时，treeSet仍然时无序的
//        TreeSet treeSet = new TreeSet();
        //使用匿名内部类向构造器中传入一个比较器
        TreeSet treeSet = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        });
        treeSet.add("a");
        treeSet.add("abc");
        treeSet.add("abcd");
        treeSet.add("aaaa");//源码中时采用自定义的Comparator先比较，再选择是否加入
        System.out.println("treeSet" + treeSet);

        /*
        //这里底层是TreeMap的方法，private V put(K key, V value, boolean replaceOld)
         cmp = cpr.compare(key, t.key);
                if (cmp < 0)
                    t = t.left;
                else if (cmp > 0)
                    t = t.right;
                else {//如果compare结果一样，就进行value的替换，
                      //但是TreeSet中value被固定为如下  ,不会发生改变,key也不会被添加进去
                      //private static final Object PRESENT = new Object();

                    V oldValue = t.value;
                    if (replaceOld || oldValue == null) {
                        t.value = value;
                    }
                    return oldValue;
                }
         */

    }
}
